package com.baoyouqun.domain.Enum;

import com.alibaba.fastjson2.JSONObject;

import java.util.List;

/**
 * 泛型枚举基类接口，定义通用枚举方法
 *
 * @param <E> 枚举类型本身
 * @param <C> 编码类型（String/Long等）
 */
public interface EnumBase<E extends Enum<E> & EnumBase<E, C>, C> {

    /**
     * 获取枚举编码
     *
     * @return 编码值
     */
    C getCode();

    /**
     * 获取枚举名称
     *
     * @return 名称
     */
    String getName();

    /**
     * 根据编码获取枚举实例
     *
     * @param code 编码
     * @return 匹配的枚举实例（无匹配返回null）
     */
    E getEnum(C code);

    /**
     * 获取所有枚举项的JSON列表（包含name和code）
     *
     * @return JSON列表
     */
    List<JSONObject> getAll();
}
    